package edu.whu.assignment8.dataobject.dto;

import edu.whu.assignment8.dataobject.Product;
import edu.whu.assignment8.dataobject.Supplier;
import edu.whu.assignment8.dataobject.User;
import lombok.Data;

import java.util.List;

@Data
public class ProductDto extends Product {

    List<User> userList;
    List<Supplier> supplierList;
}

/*
* DTO对象存在的意义：
*   DTO，即Data Transfer Object，数据传输对象。
*   表现层与应用层之间是通过数据传输对象（DTO）进行交互的，数据传输对象是没有行为的POCO对象，
*   它的目的只是为了对领域对象进行数据封装，实现层与层之间的数据传递。
* 问题：为什么要使用DTO对象，而不是直接将领域Model层对象直接进行传递？
*   因为领域对象更注重领域，而DTO更注重数据。不仅如此，由于“富领域模型”的特点，这样做会直接将领域对象的行为暴露给表现层。
*   其次是安全，比如用户的密码就不能返回给前端。
*   再次是节省流量，获取博客列表的时候，也不会把博客全文都传递给前端，只会传递标题，id和前几行等等。
*   简单来说Model面向业务，我们是通过业务来定义Model的。而DTO是面向界面UI，是通过UI的需求来定义的。
*   通过DTO我们实现了表现层与Model之间的解耦，表现层不引用Model，
*   如果开发过程中我们的模型改变了，而界面没变，我们就只需要改Model而不需要去改表现层中的东西。
*   ********但是在小项目当中，也不必过多追求Dto的使用。
* */
